/*
 * @Author: HeAo
 * @Date: 2022-09-15 10:13:37
 * @LastEditTime: 2022-09-16 09:47:44
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \第二阶段\ES6\day03类和继承\4-类.js
 * 别乱动！
 */
// es6 类 可以堪称构造函数另外一种写法
class Person {
  // 类的构造器 --必须提供的 如果不写，会默认提供空的构造器
  constructor(name, age, weight) {
    // 1、实例私有属性
    this.name = name
    this.age = age
    this.weight = weight
  }
  // 2、公共方法 --类似于存在原型对象中
  sayName() {
    console.log(this.name);
  }
  // 3、静态属性 有static声明的属性就是静态属性  只有Person类才能调用，实例对象不能调用
  static personAttr = '静态属性'
  // 4、静态方法 有static声明的方法就是静态方法
  static personMethod() {
    console.log('这是静态方法');
  }
  // 5、为引用数据类型和基本数据类型
  test = ['tom'] //实例私有属性
  test = 'tom' //实例公有属性

}
let p1 = new Person('zhangsan', 12, '40kg')
console.log(p1); //Person { name: 'zhangsan', age: 12, weight: '40kg' }
let p2 = new Person()
console.log(p1.sayName === p2.sayName); //true
// 静态属性和静态方法
Person.personMethod() //这是静态方法
console.log(Person.personAttr); //静态属性